package com.ynet.middleground.contract.dto;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Map;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @program: 2020-03-18
 * @description: 合约详情信息传输对象
 * @author: DaiGaoLe
 * @create: 2019-10-31 14:37
 **/
@Data
@ApiModel(value = "合约详情信息传输对象", description = "合约详情信息传输对象")
public class ContractDto implements Serializable {

    private static final long serialVersionUID = 1832641023593051922L;
    /**
     * 合约id
     */
    @ApiModelProperty(value = "合约id", notes = "合约id")
    private Integer id;

    /**
     * 上级合约id
     */
    @ApiModelProperty(value = "上级合约id", notes = "上级合约id")
    private Integer parentId;

    /**
     * 模板id
     */
    @ApiModelProperty(value = "模板id", notes = "模板id")
    private Integer templateId;

    /**
     * 业务流水号
     */
    @ApiModelProperty(value = "业务流水号", notes = "业务流水号", dataType = "String")
    private String serialNumber;

    /**
     * 渠道端业务id（档案依托渠道业务）
     */
    @ApiModelProperty(value = "渠道端业务id（档案依托渠道业务）", notes = "渠道端业务id（档案依托渠道业务）", dataType = "String")
    private String busId;

    /**
     * 合约编号
     */
    @ApiModelProperty(value = "合约编号", notes = "合约编号", dataType = "String")
    private String contractNo;

    /**
     * 描述备注
     */
    @ApiModelProperty(value = "描述备注", notes = "描述备注", dataType = "String")
    private String description;

    /**
     * 是否删除 1：删除，0：未删除 默认 0
     */
    @ApiModelProperty(value = "是否删除", notes = "是否删除", dataType = "Boolean")
    private Boolean isDeleted;

    /**
     * 合约状态：0-未签署（新建保存状态下）、1-签署中、2-已签署、3-已结束
     */
    @ApiModelProperty(value = "合约状态\n0-未签署\n1-签署中\n2-已签署\n3-已结束", notes = "合约状态\n0-未签署\n1-签署中\n2-已签署\n3-已结束",
        dataType = "String")
    private String status;

    /**
     * 渠道：C01-小贷，C02-保理，C03-青港易付，C04-财务信贷平台，C05-中台内管
     */
    @ApiModelProperty(value = "渠道\nC01-小贷\nC02-保理\nC03-青港易付\nC04-财务信贷平台\nC05-中台内管",
        notes = "渠道\nC01-小贷\nC02-保理\nC03-青港易付\nC04-财务信贷平台\nC05-中台内管", dataType = "String")
    private String channel;

    @ApiModelProperty(value = "所属业态公司 id \n（仅综合管理平台使用）", notes = "所属业态公司 id \n（仅综合管理平台使用）", dataType = "Integer")
    private Integer formatId;

    /**
     * 产品类型
     */
    @ApiModelProperty(value = "产品类型", notes = "产品类型", dataType = "String")
    private String productType;

    /**
     * 合约类型的编号
     */
    @ApiModelProperty(value = "合约类型的编号", notes = "合约类型的编号", dataType = "String")
    private String contractTypeCode;

    /**
     * 是否非制式：0-非制式，1-制式
     */
    @ApiModelProperty(value = "是否非制式\n0-非制式\n1-制式", notes = "是否非制式\n0-非制式\n1-制式", dataType = "Boolean")
    private Boolean isNonStandard;

    /**
     * 签署方式：0-线上，1-线下
     */
    @ApiModelProperty(value = "签署方式\n0-线上\n1-线下", notes = "签署方式\n0-线上\n1-线下", dataType = "String")
    private String signedWay;

    /**
     * 审批流程编号
     */
    @ApiModelProperty(value = "审批流程编号", notes = "审批流程编号", dataType = "String")
    private String appProcessNo;

    /**
     * 客户经理
     */
    @ApiModelProperty(value = "客户经理", notes = "客户经理", dataType = "Integer")
    private Integer customerManager;

    /**
     * 合约名称
     */
    @ApiModelProperty(value = "合约名称", notes = "合约名称", dataType = "String")
    private String contractName;

    /**
     * 签署时间
     */
    @ApiModelProperty(value = "签署时间", notes = "签署时间", dataType = "java.time.LocalDateTime")
    private LocalDateTime tsignatoryDate;

    /**
     * 业务主体ID
     */
    @ApiModelProperty(value = "业务主体ID", notes = "业务主体ID", dataType = "String")
    private String subjectId;

    /**
     * 业务主体名称
     */
    @ApiModelProperty(value = "业务主体名称", notes = "业务主体名称", dataType = "String")
    private String subjectName;

    /**
     * 签署方名称
     */
    @ApiModelProperty(value = "签署方ID", notes = "签署方ID", dataType = "String")
    private String signatoryId;

    /**
     * 签署方名称
     */
    @ApiModelProperty(value = "签署方名称", notes = "签署方名称", dataType = "String")
    private String signatoryName;

    /**
     * 参数
     */
    @ApiModelProperty(value = "参数", notes = "参数")
    private Map<String, Object> parameter;

    /**
     * 非制式合约地址oss
     */
    @ApiModelProperty(value = "非制式合约 oss 短路径地址", notes = "非制式合约 oss 短路径地址", dataType = "String")
    private String nonStandardContractOss;

    /**
     * 生成work后的合约地址oss地址
     */
    @ApiModelProperty(value = "Word 版合约 oss 短路径地址", notes = "Word 版合约 oss 短路径地址", dataType = "String")
    private String ossUrl;

    /**
     * 生成pdf后的合约地址oss地址
     */
    @ApiModelProperty(value = "PDF 版合约 oss 短路径地址", notes = "PDF 版合约 oss 短路径地址", dataType = "String")
    private String pdfOssUrl;

    /**
     * 是否为变更合约：0-不是变更合约，1-是变更合约
     */
    @ApiModelProperty(value = "是否为变更合约\n0-非变更合约\n1-变更合约", notes = "是否为变更合约\n0-非变更合约\n1-变更合约", dataType = "Boolean")
    private Boolean isChanges;

    /**
     * 非制式二维码key名
     */
    @ApiModelProperty(value = "非制式二维码key名", notes = "非制式二维码key名", dataType = "String")
    private String codeQrKey;

    /**
     * 非制式合约编号占位符key名
     */
    @ApiModelProperty(value = "非制式合约编号占位符key名", notes = "非制式合约编号占位符key名", dataType = "String")
    private String placeholderKey;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间", notes = "创建时间", dataType = "java.time.LocalDateTime")
    private LocalDateTime gmtCreate;

    /**
     * 创建者
     */
    @ApiModelProperty(value = "创建者", notes = "创建者", dataType = "Integer")
    private Integer createBy;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间", notes = "更新时间", dataType = "java.time.LocalDateTime")
    private LocalDateTime gmtModified;

    /**
     * 更新者
     */
    @ApiModelProperty(value = "更新者", notes = "更新者", dataType = "Integer")
    private Integer modifiedBy;

}
